1. Field of the Invention
The invention relates to computer communication, such as in client/server systems.
2. Related Art
One known model for assigning or performing tasks in a computer system is a client/server model. In a client/server model, clients make requests for service (by sending messages) to a server; the server responds to those requests for service by providing services to requesting clients (and possibly sending messages back to requesting clients). For example, the server might include a file server responsive to file system requests, a web server responsive to network object requests, a database server responsive to database requests, or some other type of server. Client/server models are used both internally within a single device (the client and server are different software modules), as well as between different devices (the client and server are coupled by a communication link).
When the client and server are different devices, they communicate using a communication link. In byte serial systems, messages between devices are sent and received using a communication protocol. Each message has prepended header information indicating its intended recipient, payload information, and appended checksum information. The sender thus wraps the message inside a serial byte stream, which the receiver unwraps to determine what the message is. Often, the communication protocol will be multi-layered—a lower-level protocol carries multiple types of messages, while different higher-level protocols carry messages suited to particular purposes. Thus, higher-level protocol messages package communication between the client and server, while lower-level protocol messages break up the higher-level protocol messages and package portions of it for sending between devices.
While byte serial models are designed for a very open and diverse environment, they are not well suited to rapid communication of relatively large blocks of data. First, relatively large blocks of data must generally be broken up by the sender into smaller messages, so as to accommodate the message sizes of intermediate communication links. Similarly, the smaller messages must be reassembled at the receiver into the relatively larger blocks of data; this is called fragmentation and reassembly. Second, payload information is not reliably located at any aligned location when received; this causes the receiver to move the payload information into a buffer where the block of data is aligned at a known position. Third, checksum information is computed by the sender and checked by the receiver for each message; this produces substantial computing overhead for each message and for each block of data. Fourth, the receiver must generally be prepared to receive messages of up to the largest possible size; this causes the receiver to allocate maximum size buffers, which are often larger than necessary.
Another known method for communicating data includes DMA (direct memory access) transfer of data between devices. One such method of DMA transfer is known as NUMA (non-uniform memory access); examples of NUMA architectures include Infiniband, ServerNet and interconnection networks compliant with the VI (Virtual Interface) architecture standard such as cLan, Servernet II, and FC-VI. Using a DMA transfer, the initiating device transfers data directly to or from a memory for the target device. The specific memory locations on the target device are specified by the initiator using addresses associated with addresses on the target device. While NUMA architectures are well suited to rapid communication of relatively large blocks of data, they are not generally designed to support high latency wide area networks or to support networks in which export of memory is problematic for security reasons. NUMA architectures are best suited to communication between devices that are closely coupled, both using hardware (relatively short haul communication links) and software (relatively closely cooperating system elements).
One system has used NUMA architecture for communication in a client/server architecture. The Microsoft “Winsock Direct Path” sends messages between client and server using both a TCP/IP communication link and a NUMA communication link. The Winsock Direct Path architecture, after wrapping the message for communication between the sender and the receiver, determines if there is a NUMA communication link available; if so, the Winsock Direct Path architecture uses that NUMA communication link to send the message; if not, the Winsock Direct Path architecture uses the TCP/IP communication link. While the system has some of the advantages of communication using a NUMA architecture, it still has the drawbacks noted earlier for byte serial models of communication in a client/server architecture.
Accordingly, it would be advantageous to provide a technique involving computer communication systems, such as those using a client/server model, that is not subject to drawbacks of the known art.